#  __init__, __str__, __lt__, __le__, __eq__
class Student:
    name = None
    age = None

    def __init__(self, name, age):  # __init__魔术方法让类对象可以按位置或者按照关键词传参
        self.name = name
        self.age = age

    def __str__(self):
        return f"Student类对象，name={self.name}, age={self.age}"

    def __lt__(self, other):  # __lt__只能用于小于或大于的比较
        return self.age < other.age  # 返回的结果是True或False

    def __len__(self, other):
        return self.age <= other.age  # 返回的结果是True或False

    def __eq__(self, other):  # __eq__ ==  如果不写eq方法，比较的是内存地址，即不同对象的内存地址一定不同
        return self.name == other.name  # 返回的结果是True或False， 写了eq方法可以设置比较的内容，从而判断True还是False


stu1 = Student("周杰伦", "30")
stu2 = Student("林俊杰", "32")
print(stu1)
print(str(stu2))  # 直接输出得到的是内存地址，<__main__.Student object at 0x000002293B551F70> 对我们来说作用不大
# 可通过类方法__str__转换为字符串
print(stu1 < stu2)
print(stu1 > stu2)
print(stu1 == stu2)
print(stu1 == stu2)
